package config

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"tcp_server/src/common_util"
)

type MySQLConfig struct {
	Host     string
	Port     string
	User     string
	Password string
	Database string
}

func LoadMySQLConfig() *MySQLConfig {
	return &MySQLConfig{
		Host:     MySQLHost,
		Port:     MySQLPort,
		User:     MySQLUser,
		Password: MySQLPassword,
		Database: MySQLDatabase,
	}
}

var Mysql *sql.DB

func init() {

	var err error
	cfg := LoadMySQLConfig()

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.Database)

	Mysql, err = sql.Open("mysql", dsn)
	if err != nil {
		common_util.ErrorLogger.Printf("创建数据库连接失败: %v", err)
		return
	}
	// 设置连接池参数
	Mysql.SetMaxOpenConns(MaxOpenConn)
	Mysql.SetMaxIdleConns(MaxIdleConn)
	Mysql.SetConnMaxLifetime(MaxConnLifetime)

	// 测试数据库连接
	if err := Mysql.Ping(); err != nil {
		common_util.ErrorLogger.Printf("连接数据库失败: %v", err)
		return
	}
	common_util.InfoLogger.Println("连接MySQL成功")
}
